/**
 * 若 s 和 t 中每个字符出现的次数都相同，则称 s 和 t 互为字母异位词
 * 如s="anagram", t="nagaram"
 * @param {string} s 
 * @param {string} t 
 */

// 排序法
var isAnagram1 = function (s, t) {
    return s.split('').sort().join('') === t.split('').sort().join('') ? true : false
}

// 哈希表法
var isAnagram2 = function (s, t) {
    if (s.length !== t.length) {
        return false
    }

    const map = new Map()
    for (let i = 0; i < s.length; i++) {
        // s中出现的字母，map中加一
        if (map.has(s[i])) {
            map.set(s[i], map.get(s[i]) + 1)
        } else {
            map.set(s[i], 1)
        }

        // t中出现的字母，map中减一
        if (map.has(t[i])) {
            map.set(t[i], map.get(t[i]) - 1)
        } else {
            map.set(t[i], -1)
        }
    }
    // 最后检查map里是否所有字母出现次数均为0
    for (const letter of map) {
        if (letter[1] !== 0) {
            return false
        }
    }
    return true
}